﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ImportadorDatosSanmina
{
    public partial class Form1 : Form
    {
        DirectosDataContext db;
        List<DataMark1> imports = new List<DataMark1>();
        List<EmpleadosSANM> empssan = new List<EmpleadosSANM>();
        List<SolicitudEmpleo> imports2 = new List<SolicitudEmpleo>();
        List<Empleado> imports3 = new List<Empleado>();
        List<spRegistrosFaltantesResult> importsF = new List<spRegistrosFaltantesResult>();

        public Form1()
        {
            InitializeComponent();
        }
        private void button8_Click(object sender, EventArgs e)
        {
            db = new DirectosDataContext();

            importsF = db.spRegistrosFaltantes().ToList<spRegistrosFaltantesResult>();
          
            dataGridView1.DataSource = importsF;

            db = null;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            db = new DirectosDataContext();

            
            //var impts = (from imp in db.DataMark1s select imp);
            var impts = (from imp in db.EmpleadosSANMs select imp);
            //imports =impts.ToList<DataMark1>();
            empssan = impts.ToList<EmpleadosSANM>();

            dataGridView1.DataSource = empssan;

            db = null;
        }

        private int Folio()
        {
            int folio = 0;
            db = new DirectosDataContext();
            foreach (ObtenFolioSolictudEmpleoResult item in db.ObtenFolioSolictudEmpleo())
            {
                folio = item.Column1.Value;
            }
            db = null;
            return folio;
        }

        public  string TStr(int tamano, string valor)
        {
            if (valor == null)
            {
                return " ";
            }
            string resultado = "";
            if (valor.Length > tamano)
                resultado = valor.Substring(0, tamano);
            else
                resultado = valor.Substring(0, valor.Length);
            return resultado;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //db = new DirectosDataContext("Data Source=201.155.224.125;Initial Catalog=Cosea_DirectosA;Persist Security Info=True;User ID=sa;Password=vic1973");
            DirectosDataContext db1 = new DirectosDataContext();
            
            
            int x = 1;
            foreach (EmpleadosSANM item in empssan)
            //foreach (spRegistrosFaltantesResult item in importsF)
            {
                try
                {
                    SolicitudEmpleo sol = new SolicitudEmpleo();
                    sol.IdSolicitud = Folio();
                    sol.PuestoSolicitado = "sanmina";
                    sol.SueldoMensualDeseado = decimal.Parse(item.SalarioDiario.Value.ToString());
                    //sol.Foto = item.Foto;
                    sol.Nombre1 = TStr(20, item.Nombre);
                    sol.Nombre2 = "Nuevo";
                    sol.Materno = TStr(20, item.Apellido1);
                    sol.Paterno = TStr(20, item.Apellido2);
                    sol.Edad = "0";
                    sol.Domicilio = TStr(50, item.Direccion);
                    sol.Colonia = TStr(50, item.Colonia);
                    sol.Sexo = item.Sexo;
                    sol.FechaNacimiento = item.FechaNacimiento;
                    sol.LugarNacimiento = "";
                    sol.Nacionalidad = "";
                    sol.ViveCon = "";
                    sol.Estatura = "";
                    sol.Peso = "";
                    sol.PersonasDependientes = "";
                    sol.EstadoCivil = "";
                    sol.RFC = TStr(15, item.RFC);
                    sol.Imss = TStr(30, item.IMSS);
                    sol.Cartilla = "";
                    sol.Pasaporte = "";
                    sol.LicenciaManejo = "";
                    sol.NumeroLicencia = "";
                    sol.NumeroDocumentoExtranjero = "";
                    sol.EstadoSalud = "";
                    sol.EnfermedadCronica = "";
                    sol.CualEnfermedad = "";
                    sol.PracticaDeporte = "";
                    sol.ClubDeportivo = "";
                    sol.PasatiempoFavorito = "";
                    sol.MetaVida = "";
                    sol.Padre = "";
                    sol.PadreVive = "";
                    sol.DomicilioPadre = "";
                    sol.OcupacionPadre = "";
                    sol.Madre = "";
                    sol.MadreVive = "";
                    sol.DomicilioMadre = "";
                    sol.OcupacionMadre = "";
                    sol.Esposa_o = "";
                    sol.Esposa_oVive = "";
                    sol.DomicilioEsposa_o = "";
                    sol.OcupacionEsposa_o = "";
                    sol.Primaria = "";
                    sol.DomicilioPrimaria = "";
                    sol.AnoInicioPrimaria = 0;
                    sol.AnoFinPrimaria = 0;
                    sol.AnosPrimaria = 0;
                    sol.DocumentoPrimaria = "";
                    sol.Secundaria = "";
                    sol.DomicilioSecundaria = "";
                    sol.AnoInicioSecundaria = 0;
                    sol.AnoFinSecundaria = 0;
                    sol.AnosSecundaria = 0;
                    sol.DocumentoSecundaria = "";
                    sol.Bachillerato = "";
                    sol.DomicilioBachillerato = "";
                    sol.AnoIniciolBachillerato = 0;
                    sol.AnoFinBachillerato = 0;
                    sol.AnosBachillerato = 0; ;
                    sol.DocumentoBachillerato = "";
                    sol.Licenciatura = "";
                    sol.DomicilioLicenciatura = "";
                    sol.AnoInicioLicenciatura = 0;
                    sol.AnoFinLicenciatura = 0;
                    sol.AnosLicenciatura = 0;
                    sol.DocumentoLicenciatura = "";
                    sol.ComercioTecnica = "";
                    sol.DomicilioComercioTecnica = "";
                    sol.AnoInicioComercioTecnica = 0;
                    sol.AnoFinComercioTecnica = 0;
                    sol.AnosComercioTecnica = 0;
                    sol.DocimentoComercioTecnica = "";
                    sol.EstudiosActuales = "";
                    sol.Horario = "";
                    sol.CursoCarrera = "";
                    sol.Grado = "";
                    sol.Idiomas = "";
                    sol.FuncionesOficina = "";
                    sol.MaquinasOficinaTaller = "";
                    sol.OtrosTrabajosFuncionesDomina = "";
                    sol.ComoSupoEmpleo = "";
                    sol.Cuales = "";
                    sol.ParientesTrabajando = "";
                    sol.NombreParientesTrabajando = "";
                    sol.HaAfianzado = "";
                    sol.CompaniaAfianzadora = "";
                    sol.HaSindicado = "";
                    sol.Sindicato = "";
                    sol.SeguroVida = "";
                    sol.CompaniaSeguroVida = "";
                    sol.PuedeViajar = "";
                    sol.RazonesViajar = "";
                    sol.CambioResidencia = "";
                    sol.RazonesCambioResidencia = "";
                    sol.FechaParaPresentarseTrabajar = DateTime.Now;
                    sol.OtrosIngresos = "";
                    sol.CualesIngresos = "";
                    sol.CuantoIngresos = 0m;
                    sol.ConyugeTrabaja = "";
                    sol.ConyugeDonde = "";
                    sol.ImporteConyuge = 0m;
                    sol.CasaPropia = "";
                    sol.ValorCasa = 0m;
                    sol.AutoPropio = "";
                    sol.MarcaAuto = "";
                    sol.ModeloAuto = "";
                    sol.PagaRenta = "";
                    sol.Renta = 0m;
                    sol.TieneDeudas = "";
                    sol.ConQuienDeudas = "";
                    sol.ImporteDeudas = 0m;
                    sol.AbonoMensual = 0m;
                    sol.GastosMensuales = 0m;
                    sol.Comentarios = item.NumEmp;
                    sol.FechaAlta = DateTime.Now;
                    //if (item.CURP == null)
                        sol.Curp = "CURPB" + x.ToString();
                    //else
                    //    sol.Curp = item.CURP;
                    sol.Fuma = "";
                    sol.Alcohol = "";
                    sol.Tatuaje = "";
                    sol.Perforaciones = "";
                    sol.Telefono = TStr(20, item.Telefono1);
                    sol.TrabajoEnCosea = "Si";
                    sol.Conflictiva = "";
                    sol.TieneExpediente = "Si";
                    sol.CompañiaRenta = "";
                    sol.Telefono2 = TStr(20, item.Telefono2);
                    sol.Celular = "";
                    sol.TelefonoRecados = "";
                    sol.OtroEstadoCivil = "";
                    sol.EstadoDondeVive = "";
                    sol.Accidentes = "";
                    sol.EnfermedadCronica2 = "";
                    sol.CualEnfermedad2 = "";
                    sol.HaTenidoAccidentes = "";
                    sol.CualAccidente = "";
                    sol.HaTenidoAccidentes2 = "";
                    sol.CualAccidente2 = "";
                    sol.HaTenidoOperaciones = "";
                    sol.CualOperacion = "";
                    sol.HaTenidoOperaciones2 = "";
                    sol.CualOperacion2 = "";
                    sol.DispositivosMedicos = "";
                    sol.OtroDispositivoMedico = "";
                    sol.Curso1 = "";
                    sol.Curso2 = "";
                    sol.Curso3 = "";
                    sol.Curso4 = "";
                    sol.Curso5 = "";
                    sol.ProcesoLegalenTramite = "";
                    sol.OtrosIngresosFamiliares = "";
                    sol.CantidadIngresosFamiliares = 0m;
                    sol.NumeroDependientes = 1;
                    sol.Puntaje = 5m;
                    sol.EscolaridadMaxima = "";
                    sol.TieneExperiencia = "";
                    sol.IdPuesto = 19;
                    sol.CBHijos = "No";
                    sol.CBConyuge = "No";
                    sol.CBPadres = "No";
                    sol.CBOtros = "No";
                    sol.Email = "";
                    sol.Email2 = "";
                    db1.SolicitudEmpleos.InsertOnSubmit(sol);
                    db1.SubmitChanges();                
                }
                catch (Exception ex)
                {
                    listBox1.Items.Add(ex.Message);
                    //listBox1.Items.Add(item.R_F_C_);
                                        
                }
  

                x++;
            }
            db1 = null;
            MessageBox.Show("fin");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            db = new DirectosDataContext();


            var impts = (from imp in db.SolicitudEmpleos where imp.Nombre2 == "Nuevo" select imp);
            imports2 = impts.ToList<SolicitudEmpleo>();

            dataGridView1.DataSource = imports2;

            db = null;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            DirectosDataContext db1 = new DirectosDataContext();

            foreach (SolicitudEmpleo item in imports2)
            {
                Preseleccion pres = new Preseleccion();
                pres.IdOrden = 1; //es la orden que se creo para importar los datos
                pres.IdSolicitud = item.IdSolicitud;
                pres.Comentarios = "Importación de datos de sanmina";
                pres.FechaPreseleccion = DateTime.Now;
                db1.Preseleccions.InsertOnSubmit(pres);
                db1.SubmitChanges();
            }

            db1 = null;
        }

        private DataMark1 buscaDM(string emp)
        {
            DirectosDataContext db1 = new DirectosDataContext();
            DataMark1 dm = new DataMark1();

            dm = db1.DataMark1s.Single(c => c.Emp__Number == emp);
            db1 = null;
            return dm;
        }

        private datamark2 buscaDM2(string emp)
        {
            DirectosDataContext db1 = new DirectosDataContext();
            datamark2 dm = new datamark2();

            dm = db1.datamark2s.Single(c => c.Emp__Number == emp);
            db1 = null;
            return dm;
        }

        private EmpleadosSANM buscaDM3(string emp)
        {
            DirectosDataContext db1 = new DirectosDataContext();
            //datamark2 dm = new datamark2();
            EmpleadosSANM dm = new EmpleadosSANM();

            //dm = db1.datamark2s.Single(c => c.Emp__Number == emp);
            dm = db1.EmpleadosSANMs.Single(c => c.NumEmp == emp);
            db1 = null;
            return dm;
        }

        public void EstadoEmpleado(int idEmpleado, int idEstado)
        {


                DirectosDataContext db1 = new DirectosDataContext();
                BitacoraEmpleado bEmp = new BitacoraEmpleado();
                bEmp.IdEmpleado = idEmpleado;
                bEmp.IdEstado = idEstado;
                bEmp.FechaHoraModificacion = DateTime.Now;
                bEmp.IdUsuario = 1; //Usuario por default o principal del sistema
                db1.BitacoraEmpleados.InsertOnSubmit(bEmp);
                db1.SubmitChanges();
                db1 = null;


        }

        public void GuardaPreCandidato(Empleado emp, int ord, SolicitudEmpleo sol, string nemp,
                string comentario = "Expediente recien creado")
        {

                DirectosDataContext db1 = new DirectosDataContext();

                emp.IdOrden = ord;
                emp.IdSolicitud = sol.IdSolicitud;
                emp.IdEstadoEmpleado = 1; //Estado de precontratado
                emp.NumeroEmpleado = nemp;
                db1.Empleados.InsertOnSubmit(emp);
                db1.SubmitChanges();

                ExpedienteEmpleado empExp = new ExpedienteEmpleado();
                empExp.IdEmpleado = emp.IdEmpleado;
                empExp.FechaExpediente = DateTime.Now;
                db1.ExpedienteEmpleados.InsertOnSubmit(empExp);
                db1.SubmitChanges();

                BitacoraExpediente bitExpe = new BitacoraExpediente();
                bitExpe.IdExpediente = empExp.IdExpediante;                
                bitExpe.IdUsuario = 1; //Usuario por default o principal del sistema
                
                bitExpe.FechaHoraExpediente = DateTime.Now;
                bitExpe.Comentarios = comentario;
                db1.BitacoraExpedientes.InsertOnSubmit(bitExpe);
                db1.SubmitChanges();


                Preseleccion pre = db1.Preseleccions.Single(c => c.IdSolicitud == sol.IdSolicitud && c.IdOrden == ord);
                db1.Preseleccions.DeleteOnSubmit(pre);
                db1.SubmitChanges();

                EstadoEmpleado(emp.IdEmpleado, 1);



                db1 = null;
            

        }

        private void creaEmpleado(string nemp, SolicitudEmpleo sol, int Norden)
        {
            Empleado emp = new Empleado();

            //DataMark1 dm = buscaDM(nemp);
            //datamark2 dm = buscaDM2(nemp);
            EmpleadosSANM dm = buscaDM3(nemp);
            emp.SalarioDiario = decimal.Parse(dm.SalarioDiario.ToString()) ;
            emp.FechaIngreso = dm.FechaIngr;


            emp.DiaDescanso = "";
            emp.Turno = "";
            emp.TipoSangre = "";
            emp.Medico_Fecha = DateTime.Now;

            emp.TipoContrato = "Asimilados";
            emp.Medico_A = "";
            emp.Medico_NA = "";
            emp.Medico_AntiDop = "";
            emp.Medico_Avod = "";
            emp.Medico_Avoi = "";
            emp.Medico_Observa = "Nuevo"; //se uso para importar los datos por segunda vez
            emp.Medico_Examinado = "";
            emp.Medico_Planta = "";
            emp.CreditoInfonavit = "";
            emp.NumeroCreditoInfonavit = "";
            emp.NombeAvisoAccidente = "";
            emp.TelefonoAvisoAccidente = "";
            emp.Contratado = true;

            emp.EmpresaAsignada = "Sanmina";
            emp.PuestoDepartamento = "";
            emp.PeriodoPago = "";
            emp.Fotos = false;
            emp.Domicilio = false;
            emp.Estudios = false;
            emp.Ife = false;
            emp.Imss = false;
            emp.Acta = false;
            emp.Recomendacion = false;
            emp.Policia = false;
            emp.Curp = false;
            emp.Comentarios = nemp;
            emp.IdPuesto = sol.IdPuesto;


            GuardaPreCandidato(emp, Norden, sol, nemp);


        }

        private void button5_Click(object sender, EventArgs e)
        {
            foreach (SolicitudEmpleo item in imports2)
            {
                creaEmpleado(item.Comentarios.Trim(), item, 1);
            }
            MessageBox.Show("fin");
        }

        private void button6_Click(object sender, EventArgs e)
        {
            db = new DirectosDataContext();


            var impts = (from imp in db.Empleados where imp.Medico_Observa == "Nuevo" select imp);
            imports3 = impts.ToList<Empleado>();

            dataGridView1.DataSource = imports3;

            db = null;
        }

        private void button7_Click(object sender, EventArgs e)
        {
            DirectosDataContext db1 = new DirectosDataContext();
            foreach (Empleado item in imports3)
            {
                
                Empleado emp = db1.Empleados.Single(c => c.IdEmpleado == item.IdEmpleado);
                emp.IdEstadoEmpleado = 2;
                db1.SubmitChanges();

                EstadoEmpleado(item.IdEmpleado, 2);
            }
            db1 = null;
            MessageBox.Show("fin");
        }


    }
}
